home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 2 / Meeting Pearls Vol. II (1995)(GTI - Schatztruhe)[!].iso / Pearls / dev / Oberon_Sources / OOP_in_Oberon-2 / Rectangles0.mod < prev    next >
Text File  |  1993-01-13  |  2KB  |  57 lines

  1. MODULE Rectangles0;    (*HM Mar-25-92*)
  2. IMPORT OS, Viewers0, Shapes0, GraphicFrames0;
  3.  
  4. TYPE
  5.     Rectangle* = POINTER TO RectDesc;
  6.     RectDesc* = RECORD (Shapes0.ShapeDesc)
  7.         x, y, w, h: INTEGER
  8.     END;
  9.  
  10. PROCEDURE (r: Rectangle) Draw* (f: Viewers0.Frame);
  11. BEGIN
  12.     WITH f: GraphicFrames0.Frame DO
  13.         IF r.selected THEN f.InvertBlock(r.x, r.y, r.w, r.h)
  14.         ELSE
  15.             f.InvertBlock(r.x, r.y, r.w, 1); f.InvertBlock(r.x, r.y + r.h - 1, r.w, 1);
  16.             f.InvertBlock(r.x, r.y + 1, 1, r.h - 2); f.InvertBlock(r.x + r.w - 1, r.y + 1, 1, r.h - 2)
  17.         END
  18.     END
  19. END Draw;
  20.  
  21. PROCEDURE (r: Rectangle) Copy* (): Shapes0.Shape;
  22.     VAR r1: Rectangle;
  23. BEGIN NEW(r1); r1.selected := r.selected; r1.x := r.x; r1.y := r.y; r1.w := r.w; r1.h := r.h; RETURN r1
  24. END Copy;
  25.  
  26. PROCEDURE (r: Rectangle) Move* (dx, dy: INTEGER);
  27. BEGIN INC(r.x, dx); INC(r.y, dy)
  28. END Move;
  29.  
  30. PROCEDURE (r: Rectangle) SetBox* (x, y, w, h: INTEGER);
  31. BEGIN r.SetBox^ (x, y, w, h);
  32.     r.x := x; r.y := y; r.w := w; r.h := h
  33. END SetBox;
  34.  
  35. PROCEDURE (r: Rectangle) SetSelection* (x, y, w, h: INTEGER);
  36. BEGIN
  37.     r.selected := (r.x >= x) & (r.x+r.w <= x+w) & (r.y >= y) & (r.y+r.h <= y+h)
  38. END SetSelection;
  39.  
  40. PROCEDURE (r: Rectangle) GetBox* (VAR x, y, w, h: INTEGER);
  41. BEGIN x := r.x; y := r.y; w := r.w; h := r.h
  42. END GetBox;
  43.  
  44. PROCEDURE (r: Rectangle) Load* (VAR R: OS.Rider);
  45. BEGIN R.ReadInt(r.x); R.ReadInt(r.y); R.ReadInt(r.w); R.ReadInt(r.h)
  46. END Load;
  47.  
  48. PROCEDURE (r: Rectangle) Store* (VAR R: OS.Rider);
  49. BEGIN R.WriteInt(r.x); R.WriteInt(r.y); R.WriteInt(r.w); R.WriteInt(r.h)
  50. END Store;
  51.  
  52. PROCEDURE Set*;
  53. BEGIN Shapes0.curShape := "Rectangles0.RectDesc"
  54. END Set;
  55.  
  56. END Rectangles0.
  57.